#include <stdio.h>
#include <omp.h>

// 定义 func7 函数
void func7(double A[100][100]) {
    // 设置线程数量
    omp_set_num_threads(4);

    // 创建并行区域并并行化紧随其后的 for 循环
    // 采用静态调度策略，提前将循环迭代均匀分配给各个线程
    #pragma omp parallel for schedule(static)
    for (int i = 0; i < 100; ++i) {
        int thread_id = omp_get_thread_num();
        // 输出每个线程开始处理的行
        printf("Thread %d starts processing row %d\n", thread_id, i);
        for (int j = 0; j < 100; ++j) {
            // 对数组元素 A[i][j] 的值加 1
            A[i][j] = A[i][j] + 1;
        }
        // 输出每个线程结束处理的行
        printf("Thread %d finishes processing row %d\n", thread_id, i);
    }
}

int main() {
    double A[100][100];
    // 初始化数组 A 的所有元素为 0
    for (int i = 0; i < 100; ++i) {
        for (int j = 0; j < 100; ++j) {
            A[i][j] = 0;
        }
    }

    // 调用 func7 函数对数组元素进行处理
    func7(A);

    // 打印数组的前几个元素来验证结果
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j) {
            printf("A[%d][%d] = %.2f\n", i, j, A[i][j]);
        }
    }

    return 0;
}